/**
 * C::value_type
 */
#include <iostream>
using namespace std;

template<typename T>
class Bag { //包装容器袋子
public:
    typedef T value_type;
    T val; //内容
    Bag(T value) : val(value){};
};

template<typename T>
class Box { //包装容器箱子
public:
    typedef T value_type;
    T val; //内容
    Box(T value) : val(value){};
};

template<typename C>
typename C::value_type unpack(C container) {
    return container.val;
}

int main() {
    Bag<int> t(1);
    std::cout << unpack(t);
}